#1。隐藏细节
#
'''
    #1。隐藏细节
    2.增加功能
    3，已经有的功能可以优化
接口封装测试，自动化
    1.使用yaml作为用例，降低了自动化的门槛
    2.自动请求接口，断言接口
    3.自动的在日志中生成http报文
    4.自动生成allure测试报告


yaml 格式是完全兼容json格式的 ，支持python相似的写法

    1.是数据格式，不是编程语言
    2.格式是完全兼容json格式的
    3.可以和python一样可以编辑和阅读

安装yaml模块
    pip install pyyaml

yaml规则
    1.#注释符
    2.缩进是两个空格
    3.成员表示：
        -列表
        :字典
    4.兜底的规则，完全兼容json规则


  加载yaml文件，使用open函数读取yaml里面的数据，在使用safe_load变成了字典。




接口测试用例
    1，设计用例有什么内容
        1.名字    首页的数据接口
        2.标记，mark（可选）
        3.步骤
            1.请求接口  GET https:/baidu.com
            2.响应，对响应进行断言   status_cope==200 状态码
            3.提取变量  提取json数据code

    2.yaml表示用例 Coconut.yaml 和 test_yaml.yaml




    3.封装接口的自动化框架
        1.接口请求
            外部工具requests
            http抓包：请求：
                行：方法 加 地址（必填，缺一不可）  requests.get(url)。
                头:请求头（键值对）
                体：参数的内容
            所有的操作都在 requests.request()这个方法里面
            request("方法",url,head,json，headers)



        2.断言响应
              1.接口响应
            http抓包：请求：
                行：状态码
                头:响应头（键值对）
                体：响应的内容
            获取resp的内容，在进行断言

            如果对全部进行断言先安装
             pip install responses_validataor 响应断言器




             演示带码：
#resp就是响应
#获取响应内容。
# print(resp.status_code)#读取状态吗
# print(resp.headers)#响应头
# print(resp.text)#响应正文 字符串
# print(resp.json())#响应正文 转成json


#断言 单个内容是否正确
# assert resp.status_code ==200
# # assert  "孙" in resp.text
# assert  resp.json()['2'][1] == '饼干'


#断言全部的内容
from responses_validator import  validator
validator(
    resp,
    status_code==200,
    text="*孙*",
    json={
        "2":[2]
    }
)




        4.变量提取
            接口关联
            基本原则：
                json格式：JSONPATH
                html：Xpath
                字符串：RE

                RE可以兜底。json和html都是字符串




'''
